﻿'------AUTHOR---------DATE--------VERSION-----------------------NOTES----------------------------
'    Emre TOLU    ' 21.01.2014 '    1.0    '     INITIAL CREATION FOR ESNAF TARIFF REFERENCE        -
'------------------------------------------------------------------------------------------------
Imports ccapps.persistent.Telnet
Imports ccapps.persistent.Telnet.Scripting
Imports ccapps.persistent.FTP
Imports System.Globalization
Imports System.Threading
Imports ccapps.persistent.MenuAssigner
Imports System.Data.OracleClient


Public Class MenuAssignerReference
    Inherits [lib].BasePage

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
    Protected WithEvents ContentPaneFooter1 As ccapps.BillingNetControlLibrary.ContentPaneFooter
    Protected WithEvents ContentPaneFooter2 As ccapps.BillingNetControlLibrary.ContentPaneFooter
    Protected WithEvents Lblok As System.Web.UI.WebControls.Label
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    Protected WithEvents txtCoID As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtMsisdn As System.Web.UI.WebControls.TextBox
    Protected WithEvents trEffectiveOptions As System.Web.UI.HtmlControls.HtmlTableRow
    Protected WithEvents trDealerCode As System.Web.UI.HtmlControls.HtmlTableRow



    'NOTE: The following placeholder declaration is required by the Web Form Designer.
    'Do not delete or move it.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.PageTitle = "Esnaf Referans İslemleri"
        Session("_MenuAssignerDetailRows") = Nothing


        If Not Page.IsPostBack Then
            Lblok.Text = ""

            Me.fillForm()

            If Request("PARENT_DELETE") <> "" Then
                Ref_Delete(Request("PARENT_DELETE"), Request("CHILD_DELETE"))
            End If

        End If

    End Sub

    Private Sub fillForm()
        Me.ddlOperationType.Items.Insert(0, New ListItem("Seçiniz", "0"))
        Me.ddlOperationType.Items.Insert(1, New ListItem("Referans Kayıt", "KAYIT"))
        Me.ddlOperationType.Items.Insert(2, New ListItem("Referans Sorgu & Iptal", "IPTAL"))
        Me.ddlOperationType.Items.Insert(3, New ListItem("Parent Silme", "PSILME")) 'ENG_SMT_080414
        If Request("PARENT_DELETE") = "" And Request("CHILD_DELETE") = "" Then
            Me.ddlOperationType.SelectedIndex = 0
            Me.trParent.Visible = False
        End If
        Me.trChild.Visible = False
        Me.ContentPaneFooter1.Visible = False
        Me.ContentPaneFooter2.Visible = False
        Me.ContentPaneFooter2.NavigateBackVisible = False
    End Sub

    Private Sub ddlOperationType_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlOperationType.SelectedIndexChanged

        Me.Lblok.Text = ""
        Me.txtChildMsisdn.Text = ""
        Me.txtParentMsisdn.Text = ""

        If ddlOperationType.SelectedValue = "0" Then
            Me.trChild.Visible = False
            Me.trParent.Visible = False
            Me.ContentPaneFooter1.Visible = False
            Me.ContentPaneFooter2.Visible = False
            Me.ContentPaneFooter2.NavigateBackVisible = False
        End If

        If ddlOperationType.SelectedValue = "IPTAL" Then
            Me.trChild.Visible = False
            Me.ContentPaneFooter1.Visible = False
            Me.ContentPaneFooter2.Visible = False
            Me.trParent.Visible = True
            Me.Button1.Visible = True
            Me.dg_ChildMsisdnss.Visible = False
        End If

        If ddlOperationType.SelectedValue = "KAYIT" Then
            Me.trChild.Visible = True
            Me.trParent.Visible = True
            Me.ContentPaneFooter1.Visible = True
            Me.ContentPaneFooter2.Visible = False
            Me.dg_ChildMsisdnss.Visible = False
            Me.Button1.Visible = False
            dg_ChildMsisdnss.DataSource = Null_Definition()
            dg_ChildMsisdnss.DataBind()
        End If

        If ddlOperationType.SelectedValue = "PSILME" Then
            Me.trChild.Visible = False
            Me.trParent.Visible = True
            Me.ContentPaneFooter1.Visible = False
            Me.ContentPaneFooter2.Visible = True
            Me.dg_ChildMsisdnss.Visible = False
            Me.Button1.Visible = False
            dg_ChildMsisdnss.DataSource = Null_Definition()
            dg_ChildMsisdnss.DataBind()
        End If
    End Sub

    Private Sub ContentPaneFooter1_Confirmed(ByVal sender As Object, ByVal e As System.EventArgs) Handles ContentPaneFooter1.Confirmed
        Dim parentMsisdn As String
        Dim childMsisdn As String
        Dim processDate As String
        Dim operationType As String
        Dim result As String()

        Me.Lblok.Text = ""

        operationType = Me.ddlOperationType.SelectedValue
        parentMsisdn = txtParentMsisdn.Text.Trim
        childMsisdn = txtChildMsisdn.Text.Trim
        processDate = DateAndTime.Now.ToString("yyyy-MM-dd H:mm:ss")

        If parentMsisdn = "" Then
            Me.Lblok.Text = "Parent Msisdn Boş Geçilemez"
            Return
        End If

        If parentMsisdn.Length <> 10 Then
            Me.Lblok.Text = "Parent Msisdn'i 10 hane giriniz."
            Return
        End If

        If childMsisdn.Length < 10 And childMsisdn.Length > 0 Then
            Me.Lblok.Text = "Child Msisdn boş veya 10 hane girilebilir."
            Return
        End If

        result = persistent.MenuAssigner.StartReferenceAddProcesses(parentMsisdn, childMsisdn, processDate, operationType)

        If result(0) = 0 Then
            Me.Lblok.Text = "Kayıt Yapıldı."
            Alert("Kayıt Yapıldı.", Me)

        ElseIf result(0) = 1 Then
            Me.Lblok.Text = "Referans numara alanı boş bırakılamaz."
            Alert("Referans numara alanı boş bırakılamaz.", Me)

        ElseIf result(0) = 2 Then
            Me.Lblok.Text = "MAIN MSISDN daha önce kayıt yapmıştır."
            Alert("MAIN MSISDN daha önce kayıt yapmıştır.", Me)

        ElseIf result(0) = 3 Then
            Me.Lblok.Text = "Referans numara ve referans talep eden numara aynı olamaz."
            Alert("Referans numara ve referans talep eden numara aynı olamaz.", Me)

        ElseIf result(0) = 4 Then
            Me.Lblok.Text = "Referansla gelen numara daha önce başka bir müşteriyi referans olarak göndermiş olup Esnaf/Uzman tarifesinden yararlanmaktadır."
            Alert("Referansla gelen numara daha önce başka bir müşteriyi referans olarak göndermiş olup Esnaf/Uzman tarifesinden yararlanmaktadır.", Me)

        ElseIf result(0) = 5 Then
            Me.Lblok.Text = "Referans gösterilmek istenen numaranın tarifesi uygun değildir."
            Alert("Referans gösterilmek istenen numaranın tarifesi uygun değildir.", Me)

        ElseIf result(0) = 6 Then
            Me.Lblok.Text = "Referans gösterilmek istenen numara aktif değildir."
            Alert("Referans gösterilmek istenen numara aktif değildir.", Me)

        ElseIf result(0) = 7 Then
            Me.Lblok.Text = "Referans gösterilmek istenen numara Avea numarası değildir."
            Alert("Referans gösterilmek istenen numara Avea numarası değildir.", Me)

        ElseIf result(0) = 8 Then
            Me.Lblok.Text = "Referans gösterilmek istenen numaranın referans verme hakkı tükenmiştir."
            Alert("Referans gösterilmek istenen numaranın referans verme hakkı tükenmiştir.", Me)

        Else
            Me.Lblok.Text = "Islem Gerceklesemedi. Tekrar Deneyiniz."
            Alert("Islem Gerceklesemedi. Tekrar Deneyiniz.", Me)
        End If

    End Sub

    Public Shared Function Child_Definitions(ByVal p_msisdn As String) As DataTable
        Dim sql As String
        sql = "SELECT   PARENT_MSISDN, CHILD_MSISDN, REF_ID ""DELETE ROW"" FROM  EU_BILL.ESNAF_REFERENCE_MAIN where PARENT_MSISDN = '[TAG1]' and status in (1,2)"
        sql = sql.Replace("[TAG1]", p_msisdn)
        Return persistent.myDBConn.myORATable(sql)
    End Function

    Public Shared Function Null_Definition() As DataTable
        Dim sql As String
        sql = "SELECT   null ""PARENT_MSISDN"", null ""CHILD_MSISDN"", null ""DELETE_ROW""  from DUAL"
        Return persistent.myDBConn.myORATable(sql)
    End Function

    Private Sub dg_ChildMsisdnss_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dg_ChildMsisdnss.ItemDataBound

        If e.Item.ItemIndex >= 0 Then
            Dim hl_Delete As New System.Web.UI.WebControls.HyperLink

            hl_Delete.Text = "IPTAL"
            hl_Delete.NavigateUrl = "MenuAssignerReference.aspx?PARENT_DELETE=" + Trim(e.Item.Cells(0).Text).Replace("&nbsp;", "") + "&CHILD_DELETE=" + Trim(e.Item.Cells(1).Text).Replace("&nbsp;", "")
            e.Item.Cells(2).Controls.Clear()
            e.Item.Cells(2).Controls.Add(hl_Delete)

        Else
            e.Item.BackColor = System.Drawing.Color.Olive
        End If

    End Sub

    Private Sub Ref_Delete(ByVal p_msisdn As String, ByVal c_msisdn As String)


        Dim processDate As String
        Dim result As String()

        processDate = DateAndTime.Now.ToString("yyyy-MM-dd H:mm:ss")

        'If p_msisdn <> "" And c_msisdn = "" Then
        'Me.Lblok.Text = "Child yok, kayıt silinemez."
        'Alert("Child yok, kayıt silinemez.", Me)
        'End If

        result = persistent.MenuAssigner.StartReferenceAddProcesses(p_msisdn, c_msisdn, processDate, "IPTAL")

        If result(0) = 0 Then
            Me.Lblok.Text = "Kayıt iptali yapıldı."

        ElseIf result(0) = 1 Then
            Me.Lblok.Text = "Referans numara alanı boş bırakılamaz."

        ElseIf result(0) = 2 Then
            Me.Lblok.Text = "Referans olunan numara alanı boş bırakılamaz. Kayıt Silinmedi"

        ElseIf result(0) = 3 Then
            Me.Lblok.Text = "Giriş yapılan numara için referans kaydı bulunmamaktadır."

        ElseIf result(0) = 4 Then
            Me.Lblok.Text = "Giriş yapılan numara için referans kaydı daha önce silinmiştir."

        ElseIf result(0) = 5 Then
            Me.Lblok.Text = "Referans ile gelen numara aktif değildir."

        ElseIf result(0) = 6 Then
            Me.Lblok.Text = "Referans olunan numara icin referans kaydi iptal suresi dolmustur."

        Else
            Me.Lblok.Text = "Islem Gerceklesemedi. Tekrar Deneyiniz."
            Alert("Islem Gerceklesemedi. Tekrar Deneyiniz.", Me)
        End If

        dg_ChildMsisdnss.DataSource = Child_Definitions(p_msisdn)
        dg_ChildMsisdnss.DataBind()

    End Sub

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim parentMsisdn As String
        Dim tmcode As Integer
        Dim coID As Double

        dg_ChildMsisdnss.Visible = True
        Me.Lblok.Text = ""
        parentMsisdn = txtParentMsisdn.Text.Trim

        If parentMsisdn = "" Then
            Me.Lblok.Text = "Parent Msisdn Boş Geçilemez"
            Return
        End If

        If parentMsisdn.Length <> 10 Then
            Me.Lblok.Text = "Parent Msisdn'i 10 hane giriniz."
            Return
        End If

        Dim checkIfChild As Integer = persistent.myDBConn.ORAScalar_LOG("select count(*) from eu_bill.esnaf_reference_main erm where erm.child_msisdn = '" & parentMsisdn & "'", _
                                                             "", "", "", parentMsisdn, "SELECT(EsnafreferenceMain)", "MenuAssignerReference", Session("user"))

        Dim checkIfFullRef As Integer = persistent.myDBConn.ORAScalar_LOG("select count(*) from eu_bill.esnaf_reference_main erm where erm.parent_msisdn = '" & parentMsisdn & "'", _
                                                             "", "", "", parentMsisdn, "SELECT(EsnafreferenceMain)", "MenuAssignerReference", Session("user"))


        If IsDBNull(persistent.myDBConn.ORAScalar("select fn_msisdn_to_coid('" & parentMsisdn & "') from dual")) Then
            coID = "0"
        Else
            coID = persistent.myDBConn.ORAScalar("select fn_msisdn_to_coid('" & parentMsisdn & "') from dual")
        End If




        If coID <> "0" Then
            tmcode = persistent.myDBConn.ORAScalar_LOG("select tmcode from contract_all where co_id = " & coID & "", _
                                                                 "", "", coID, "", "SELECT(contractAll)", "MenuAssignerReference", Session("user"))
        Else
            tmcode = 0
        End If

        Dim checkTariff As Integer = persistent.myDBConn.ORAScalar("select count(*) from eu_bill.esnaf_reference_tmcode where tmcode = " & tmcode & "")

        If checkIfChild > 0 Then
            Me.Lblok.Text = "Abone parent degil, referans hakkı yoktur."
            Return
        End If

        If checkIfFullRef = 0 Then
            If checkTariff > 0 Then
                Me.Lblok.Text = "Abone hiç referans olmamıştır, tüm referans hakları durmaktadır."
                Return
            End If
            If checkTariff = 0 Then
                Me.Lblok.Text = "Girilen MSISDN parent olamaz, referans hakkı yoktur."
                Return
            End If
        End If

        dg_ChildMsisdnss.DataSource = Child_Definitions(parentMsisdn)
        dg_ChildMsisdnss.DataBind()

    End Sub

    Protected Sub ContentPaneFooter2_Confirmed(sender As Object, e As EventArgs) Handles ContentPaneFooter2.Confirmed
        Dim parentMsisdn As String
        Dim result As String()


        parentMsisdn = txtParentMsisdn.Text.Trim

        If parentMsisdn = "" Then
            Me.Lblok.Text = "Parent Msisdn Boş Geçilemez"
            Return
        End If

        If parentMsisdn.Length <> 10 Then
            Me.Lblok.Text = "Parent Msisdn'i 10 hane giriniz."
            Return
        End If

        result = persistent.MenuAssigner.DeleteParentProcess(parentMsisdn)

        If result(0) = 0 Then
            Me.Lblok.Text = parentMsisdn & " numaralı abone silindi."
            Alert(parentMsisdn & " numaralı abone silindi.", Me)

        ElseIf result(0) = 1 Then
            Me.Lblok.Text = "İşlem başarısız. Girilen numara ile ilgili kayıt Referans sisteminde bulunmamaktadır."
            Alert("İşlem başarısız. Girilen numara ile ilgili kayıt Referans sisteminde bulunmamaktadır.", Me)

        ElseIf result(0) = 2 Then
            Me.Lblok.Text = "İşlem başarısız. Aboneyi referans göstermiş başka aboneler mevcut."
            Alert("İşlem başarısız. Aboneyi referans göstermiş başka aboneler mevcut.", Me)

        ElseIf result(0) = 3 Then
            Me.Lblok.Text = "İşlem başarısız. Toplu işlem gerçekleştirilirken hata oluştu."
            Alert("İşlem başarısız. Toplu işlem gerçekleştirilirken hata oluştu.", Me)

        ElseIf result(0) = 4 Then
            Me.Lblok.Text = "İşlem başarısız. Sebebi bilinmeyen hata."
            Alert("İşlem başarısız. Sebebi bilinmeyen hata.", Me)

        Else
            Me.Lblok.Text = "İşlem başarısız. Sebebi bilinmeyen hata."
            Alert("İşlem başarısız. Sebebi bilinmeyen hata.", Me)
        End If
        txtParentMsisdn.Text = ""

    End Sub

End Class
